package com.guanyu.u2cache.annotation;

import com.guanyu.u2cache.enums.CacheType;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 缓存清空:
 * 1、更新缓存
 *
 * @author zhouyunjian
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface U2CachePut {


    String[] cacheNames() default {"localRemoteCache"};

    String key() default "";
    

    /**
     * 缓存策略：
     * CacheType.LEVEL1CACHE-一级缓存/本地缓存
     * CacheType.LEVEL2CACHE-二级缓存/远程缓存
     * CacheType.LEVEL1TOL2CACHE-一级+二级缓存
     *
     * @return
     */
    CacheType cacheType() default CacheType.LEVEL1TO2;

    /**
     * 超时时间参数: 正数值，如果<=0则不限制超时
     * d/h/m/s 四种选择，代表天/时/分/秒
     *
     * @return
     */
    long expireTime() default 0;

    /**
     * 超时时间单位
     *
     * @return
     */
    TimeUnit expireUnit() default TimeUnit.MINUTES;
}
